import axios from "axios";
import { MessageBox,Message } from "element-ui";
import Cookie from 'js-cookie'

const BASE_URL = '/admin-api'

//----------------------------初始化封装axios----------------------------
const http = axios.create({
    baseURL:BASE_URL,//接口的基础url
    timeout:5000,

})

//----------------------------请求拦截----------------------------
http.interceptors.request.use(config => {
        //获取token
        let token = Cookie.get('login-token');
        if(token){
            config.headers['Authorization']='Bearer ' + token //jwt认证的令牌
        }
        return config
    },error => {
        console.log(error)
        Promise.reject(error)
})  

//----------------------------响应拦截----------------------------
http.interceptors.response.use(response=>{
        let res = response.data
        console.log('---------------------------------',res)
        if(200 == res.code){//状态码表示响应数据成功
            return res
        }
        if(401 == res.code){
            MessageBox.confirm("您没有登录或者登录失效",'提示',{
                //跳转到登录
                cancelButtonText:'取消',
                confirmButtonText:'确定',
                type:'warning'
            }).then(()=>{
                Cookie.remove('login-token')
                window.location.href = '/login'
            }).catch(err=>{
                console.log("点击取消")
            })
        }else{
            Message({
                type:'error',
                message:res.msg ? res.msg : '错误',
                duration:2000
            })
        }
        if(403 == res.code){
            MessageBox.confirm("您权限不足",'提示',{
                //跳转到登录
                cancelButtonText:'取消',
                confirmButtonText:'确定',
                type:'warning'
            }).then(()=>{
                Cookie.remove('login-token')
                window.location.href = '/login'
            }).catch(err=>{
                console.log("点击取消")
            })
        }else{
            Message({
                type:'error',
                message:res.msg ? res.msg : '错误',
                duration:2000
            })
        }
        return Promise.reject(new Error(res.msg ? res.msg : '错误'))
    },error=>{
        console.log(error)
        Message({
            type:'error',
            message:error.msg ? error.msg : '错误',
            duration:200
        })
        return Promise.reject(error)
})

/**
 * Get 请求 
 * @param {*} url 请求接口地址
 * @param {*} params 请求参数
 * @returns 
 */
export function doGet(url,params){
    return http({
        method:'get',
        url:url,
        params:params,
    })
}

/**
 * Get 请求 
 * @param {*} url 请求接口地址
 * @returns 
 */
export function doGetUrl(url){
    return http({
        method:'get',
        url:url
    })
}

/**
 * Post 请求
 * @param {*} url 请求接口地址
 * @param {*} data 请求数据
 * @returns 
 */
export function doPost(url,data){
    return http({
        method:'post',
        url:url,
        data:data,
    })
}

/**
 * Put 请求
 * @param {*} url 请求接口地址
 * @param {*} data 请求数据
 * @returns 
 */
export function doPut(url,data){
    return http({
        method:'put',
        url:url,
        data:data,
    })
}

/**
 * Delete 请求
 * @param {*} url 请求接口地址
 * @returns 
 */
export function doDelete(url,params){
    return http({
        method:'delete',
        url:url,
        params:params
    })
}

/**
 * Delete 请求
 * @param {*} url 请求接口地址
 * @returns 
 */
export function doDeleteUrl(url){
    return http({
        method:'delete',
        url:url
    })
}